package com.itheima.tlais_web_management.controller;

import com.itheima.tlais_web_management.pojo.Emp;
import com.itheima.tlais_web_management.pojo.PageBean;
import com.itheima.tlais_web_management.pojo.Result;
import com.itheima.tlais_web_management.service.Empservice;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.util.List;

@Slf4j
@RestController
public class EmpController {

    @Autowired
    private Empservice empservice;

    /**
     * 前端页面传递来 页码数 和 每页要展示的数据条数。
     * 程序返回所需要的数据 和 所有数据条数。
     * @param page
     * @param pageSize
     * @return
     */
    @GetMapping("emps")
    public Result page(@RequestParam(defaultValue = "1") Integer page,
                       @RequestParam(defaultValue = "10") Integer pageSize,
                       String name, Short gender,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
                       @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){

        log.info("分页查询：参数{},{},{},{},{},{}",page,pageSize,name,gender,begin,end);
        PageBean pageBean = empservice.page(page,pageSize,name,gender,begin,end);

        return Result.success(pageBean);
    }

    /**
     * 删除员工数据
     */

    @DeleteMapping("/emps/{ids}")
    public Result delete(@PathVariable List<Integer> ids){
        log.info("根据 id 批量删除员工{}",ids);

        empservice.delete(ids);

        return Result.success();
    }

    /**
     * 新增员工
     */
    @PostMapping("emps")
    public Result save(@RequestBody Emp emp){
        log.info("添加员工：{}",emp);

        empservice.save(emp);

        return Result.success();
    }

    /**
     * 根据 ID 查询员工信息
     * @param id
     * @return
     */
    @GetMapping("/emps/{id}")
    public Result getbyid(@PathVariable Integer id){
        log.info("根据 id 查询员工信息：{}",id);

        Emp emp = empservice.getbyid(id);

        return Result.success(emp);
    }

    /**
     * 根据 职位ID 查询员工信息
     * @param id
     * @return
     */
    @GetMapping("/emps/job/{id}")
    public Result getbyjobid(@PathVariable Integer id){
        log.info("根据 职位id 查询员工信息：{}",id);

        List<Emp> empList = empservice.getbyjobid(id);

        return Result.success(empList);
    }

    /**
     * 修改员工信息
     */
    @PutMapping("emps")
    public Result update(@RequestBody Emp emp){
        log.info("修改员工信息：{}",emp);

        empservice.update(emp);

        return Result.success();
    }
}



















